const str = 'hello typescript!';
const num = 520;
const bool = false;
// 任意类型的数组
const arr1 = [1, 2, 3, 4];
// 只能存储字符串的数组
const str_arr = ['1', '2', 'Job'];
// number[]、boolean[]
// 任意类型的数组，写法2
const arr3 = [];
// 只能存储字符串的数组，写法2
const str_arr2 = ['1', '2', 'Job'];
// 元组
const location$ = [25.33, 52.01];
// never类型
/**
 * never 类型表示那些永不存在的值的类型。它通常用于表示那些永远不会发生的情况
 */
// 因为这个函数永远不会返回
function infiniteLoop() {
    while (true) {
        // 无限循环
    }
}
// unknown 可以表示任何类型的值
/**
 * 与 any 类型不同，unknown 类型更加安全，因为它不允许你在没有类型检查的情况下直接使用其值
 * any 类型允许你在没有任何类型检查的情况下使用其值，这可能会导致类型错误和运行时错误。
 * unknown 类型要求你在使用其值之前进行类型检查或类型断言，从而提高了代码的安全性。
 */
function processValue(val) {
    return val;
}
processValue(1);
processValue('Mr.Zhu');
processValue(true);
const undef = undefined;
const null_a = null;
// 空类型, undefined位空类型可接受的一种
const void_a = undefined;
const person = {
    name: 'Jack',
    age: 18,
    gander: 'male'
};
const school1 = {
    name: '北京大学',
    tel: '010-12345678',
    // 拥有索引签名
    address: '北京市海淀区颐和园路5号',
    students: 30000
};
// 枚举
// 数字枚举
var Season;
(function (Season) {
    Season[Season["Spring"] = 0] = "Spring";
    Season[Season["Summer"] = 1] = "Summer";
    Season[Season["Autumn"] = 2] = "Autumn";
    Season[Season["Winter"] = 3] = "Winter";
})(Season || (Season = {}));
// 不指定值的话会默认从 0 开始 +1
console.log(Season.Spring); // 输出 0
console.log(Season.Summer); // 输出 1
console.log(Season.Autumn); // 输出 2
console.log(Season.Winter); // 输出 3
// 字符串枚举
var SeasonTwo;
(function (SeasonTwo) {
    SeasonTwo["Spring"] = "\u6625";
    SeasonTwo["Summer"] = "\u590F";
    SeasonTwo["Autumn"] = "\u79CB";
    SeasonTwo["Winter"] = "\u51AC";
})(SeasonTwo || (SeasonTwo = {}));
console.log(SeasonTwo.Spring); // 输出 春
console.log(SeasonTwo.Summer); // 输出 夏
console.log(SeasonTwo.Autumn); // 输出 秋
console.log(SeasonTwo.Winter); // 输出 冬
// 多种类型
const unite_a = 'Job';
const uniteOne = 1314;
const uniteTwo = [1, 'Lucy'];
const uniteThree = {
    name: 'Miss.Liu',
    age: 18,
    gander: 'female'
};
// 可以有重复名称的 interface， ts会自动进行合并
const merge = {
    state: 'info',
    status: 400
};
